#include <iostream>
#include <signal.h>
#include <unistd.h>
using namespace std;

// void handler(int signo)
// {
//     cout << "虽然除 0 了，但我不终止进程" << endl;
// }

int main()
{
    // signal(SIGSEGV, handler);
    int* ptr = nullptr;
    *ptr = 10;

    return 0;
}



// void handler(int signo)
// {
//     cout << "虽然除 0 了，但我不终止进程" << endl;
// }

// int main()
// {
//     signal(SIGFPE, handler);
//     int n = 10;
//     n /= 0;

//     return 0;
// }


// int n = 0;

// void handler(int signo)
// {
//     cout << n << endl;
//     exit(1);
// }

// int main()
// {
//     signal(SIGALRM, handler);
//     alarm(1);   //设定一个一秒后的闹钟

//     while(true)
//         n++;

//     return 0;
// }



// void handler(int signo)
// {
//     cout << "收到了 " << signo << " 号信号，已执行新动作" << endl;
//     int n = alarm(10);
//     cout << "上一个闹钟剩余时间: " << n << endl;
// }

// int main()
// {
//     signal(SIGALRM, handler);
//     alarm(10);   //设定一个十秒后的闹钟

//     while(true)
//     {
//          cout << "我是一个进程，我正在运行…… PID: " << getpid() << endl;
//          sleep(1);
//     };

//     return 0;
// }


// void handler(int signo)
// {
//     cout << "收到了 " << signo << " 号信号，已执行新动作" << endl;
// }

// int main()
// {
//     signal(6, handler);
//     // signal(SIGABRT, handler);    //这种写法也是可以的

//     int n = 1;
//     while (true)
//     {

//         cout << "我是一个进程，已经运行了 " << n << " 秒 PID: " << getpid() << endl;
//         sleep(1);
//         n++;

//         if (n > 5)
//             abort();
//     }
//     return 0;
// }

// int main()
// {

//     int n = 1;
//     while (true)
//     {

//         cout << "我是一个进程，已经运行了 " << n << " 秒 PID: " << getpid() << endl;
//         sleep(1);
//         n++;

//         if (n > 5)
//             kill(getpid(), SIGKILL);
//     }

//     return 0;
// }

// void handler(int signo)
// {
//     cout << "当前 " << signo << " 号信号正在尝试执行相应的动作" << endl;
// }

// int main()
// {

//     //给所有普通信号注册新方法

//     for(int i = 1; i < 32; i++)
//         signal(i, handler);

//     while(true)
//     {
//         cout << "我是一个进程，我正在运行…… PID: " << getpid() << endl;
//         sleep(1);
//     }

//     return 0;
// }